package jp.co.nes.awssupport.common.bean;

import java.time.YearMonth;

import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTypeConverted;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBVersionAttribute;

import jp.co.nes.awssupport.common.dao.YearMonthConverter;

/**
 * 集計進捗状況ヘッダです。
 */
@DynamoDBTable(tableName = "CompileProgressHeader")
public class CompileProgressHeaderBean extends BaseBean {

    /** serialVersionUID */
    private static final long serialVersionUID = 1L;

    /** 処理対象年月 */
    private YearMonth targetYearMonth;

    /** 確定フラグ */
    private boolean isConfirmedBillingCsv;

    /** バージョンNo. */
    private Long versionNo;

    /**
     * デフォルトコンストラクタです。
     */
    public CompileProgressHeaderBean() {
    }

    /**
     * 処理対象年月を返却します。
     *
     * @return 処理対象年月
     */
    @DynamoDBHashKey
    @DynamoDBTypeConverted(converter = YearMonthConverter.class)
    public YearMonth getTargetYearMonth() {
        return targetYearMonth;
    }

    /**
     * 処理対象年月を設定します。
     *
     * @param targetYearMonth 処理対象年月
     */
    public void setTargetYearMonth(YearMonth targetYearMonth) {
        this.targetYearMonth = targetYearMonth;
    }

    /**
     * 確定フラグを返却します。
     *
     * @return true: 確定, false: 未確定
     */
    public boolean isConfirmedBillingCsv() {
        return isConfirmedBillingCsv;
    }

    /**
     * 確定フラグを設定します。
     *
     * @param isConfirmedBillingCsv 確定フラグ
     */
    public void setConfirmedBillingCsv(boolean isConfirmedBillingCsv) {
        this.isConfirmedBillingCsv = isConfirmedBillingCsv;
    }

    /**
     * バージョンNo.を返却します。
     *
     * @return バージョンNo.
     */
    @DynamoDBVersionAttribute
    public Long getVersionNo() {
        return versionNo;
    }

    /**
     * バージョンNo.を設定します。
     *
     * @param versionNo バージョンNo.
     */
    public void setVersionNo(Long versionNo) {
        this.versionNo = versionNo;
    }
}
